/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Modelo;

import Controle.Controlador;
import java.sql.ResultSet;
import java.text.DateFormat;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;

/**
 *
 * @author Andre Luiz
 */
public class Pedido {
    
    private Integer codigo;
    private Integer codigo_cliente;
    private Integer codigo_endereco_entrega;
    private Date data;
    private Float valor_entrega;
    private Float desconto;
    private Float valor_total;
    private String status;
    private boolean removido;
    // variaveis para auxilio na manipulação do banco de dados
    private ArrayList<Object> listaItens = new ArrayList();
    private Endereco endEntrega;
    private Calendar a;
    public Pedido() {
    }

    public Pedido(Integer codigo, Integer codigo_cliente, Integer codigo_endereco_entrega, Date data, Float valor_entrega, Float desconto, Float valor_total, String status) {
        this.codigo = codigo;
        this.codigo_cliente = codigo_cliente;
        this.codigo_endereco_entrega = codigo_endereco_entrega;
        this.data = data;
        this.valor_entrega = valor_entrega;
        this.desconto = desconto;
        this.valor_total = valor_total;
        this.status = status;
    }

    public Integer getCodigo() {
        return codigo;
    }

    public Integer getCodigo_cliente() {
        return codigo_cliente;
    }

    public Integer getCodigo_endereco_entrega() {
        return codigo_endereco_entrega;
    }

    public Date getData() {
        return data;
    }

    public Float getDesconto() {
        return desconto;
    }

    public ArrayList<Object> getListaItens() {
        return listaItens;
    }

    public String getStatus() {
        return status;
    }

    public Float getValor_entrega() {
        return valor_entrega;
    }

    public Float getValor_total() {
        return valor_total;
    }

    public void setCodigo(Integer codigo) {
        this.codigo = codigo;
    }

    public void setCodigo_cliente(Integer codigo_cliente) {
        this.codigo_cliente = codigo_cliente;
    }

    public void setCodigo_endereco_entrega(Integer codigo_endereco_entrega) {
        this.codigo_endereco_entrega = codigo_endereco_entrega;
    }

    public void setData(Date data) {
        this.data = data;
    }

    public void setDesconto(Float desconto) {
        this.desconto = desconto;
    }

    public void setListaItens(ArrayList<Object> listaItens) {
        this.listaItens = listaItens;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public void setValor_entrega(Float valor_entrega) {
        this.valor_entrega = valor_entrega;
    }

    public void setValor_total(Float valor_total) {
        this.valor_total = valor_total;
    }

    public Endereco getEndEntrega() {
        return endEntrega;
    }

    public void setEndEntrega(Endereco endEntrega) {
        this.endEntrega = endEntrega;
    }

    public boolean isRemovido() {
        return removido;
    }

    public void setRemovido(boolean removido) {
        this.removido = removido;
    }
    
    //
    // Abaixo os metodos seters com paramentro String 
    //
    public void setCodigo(String codigo) {
        try{
            this.codigo = Integer.parseInt(codigo);
        }catch(Exception ex){}
    }

    public void setCodigo_cliente(String codigo_cliente) {
        try{
            this.codigo_cliente = Integer.parseInt(codigo_cliente);
        }catch(Exception ex){}
    }

    public void setCodigo_endereco_entrega(String codigo_endereco_entrega) {
        try{
            this.codigo_endereco_entrega = Integer.parseInt(codigo_endereco_entrega);
        }catch(Exception ex){}
    }

    public void setData(String data) {
        try {
            this.data = DateFormat.getDateInstance().parse(data);
        } catch (ParseException ex) {
            data = null;
        }
    }

    public void setDesconto(String desconto) {
        try{
            this.desconto = Float.parseFloat(desconto);
        }catch(Exception ex){}
    }

    public void setValor_entrega(String valor_entrega) {
        try{
            this.valor_entrega = Float.parseFloat(valor_entrega);
        }catch(Exception ex){}
    }

    public void setValor_total(String valor_total) {
        try{
            this.valor_total = Float.parseFloat(valor_total);
        }catch(Exception ex){}
    }
    
    public void addItem(Object obj){
        this.listaItens.add(obj);
    }
    
    public void addItemIndex(Object obj, int index){
        this.listaItens.add(index,obj);
    }

    @Override
    public String toString() {
        return "Pedido{" + "codigo=" + codigo + ", codigo_cliente=" + codigo_cliente + ", codigo_endereco_entrega=" + codigo_endereco_entrega + ", data=" + data + ", valor_entrega=" + valor_entrega + ", desconto=" + desconto + ", valor_total=" + valor_total + ", status=" + status + ", removido=" + removido + '}';
    }
    
    public String toString_Update() {
        return "\"Pedido\"{" + "codigo=" + codigo + ", codigo_cliente=" + codigo_cliente + ", codigo_endereco_entrega=" + codigo_endereco_entrega + ", data=" + data + ", valor_entrega=" + valor_entrega + ", desconto=" + desconto + ", valor_total=" + valor_total + ", status=" + status + ", removido=" + removido + ",}";
    }
    
    public String toString_Insert() {
        return "\"Pedido\"{" + "codigo_cliente=" + codigo_cliente + ", codigo_endereco_entrega=" + codigo_endereco_entrega + ", data=" + data + ", valor_entrega=" + valor_entrega + ", desconto=" + desconto + ", valor_total=" + valor_total + ", status=" + status + ", removido=" + removido + ",}";
    }
    
    public boolean setALL(ResultSet rs, boolean nextInicial){
        try {
            if(nextInicial)
                rs.next();
            
            this.codigo = rs.getInt("codigo");
            this.codigo_cliente = rs.getInt("codigo_cliente");
            this.codigo_endereco_entrega = rs.getInt("codigo_endereco_entrega");
            this.data = rs.getDate("data",a);
            this.valor_entrega = rs.getFloat("valor_entrega");
            this.desconto = rs.getFloat("desconto");
            this.valor_total = rs.getFloat("valor_total");
            this.status = rs.getString("status");
            
            return true;
       } catch (Exception ex) {
           ex.printStackTrace();
           System.out.println(ex.getMessage());
           return false;
       }
    }
    
    public boolean carregarPedidoBD(int codigo){
        return setALL(Controlador.carregarPedido_BD(codigo),true);
    }
    
}
